# 1.安装lxml库
#   注意安装位置以及更新 pip install lxml
#       python解释器所在位置即可
# 2.导入lxml.etree
#   from lxml import etree
# 3.解析本地文件
#   etree.parse()
#       html_tree = etree.parse('xx.html')
# 4.服务器响应文件
#   etree.HTML()
#       html_tree = etree.HTML(response.read().decode('utf-8'))
# 5.html_tree.xpath(xpath路径)-


from lxml import etree

# xpath解析
# (1)解析本地文件                                     etree.parse()
# (2)服务器响应文件
#       -->response.read().decode('utf-8')          etree.HTML()-

# xpath解析本地文件
tree = etree.parse('070.解析xpath的基本使用.html')
# print(tree)

# tree.xpath('xpath路径')

# # 查找ul下面的li
# #   / 子节点
# #   // 子孙节点-
#
# li_list = tree.xpath('//body//li')


# # 查找所有由id的属性的li标签
# # text() 获取标签中的内容
# li_list = tree.xpath('//ul/li[@id]/text()')


# # 找到id为l1的li标签      注意引号问题
# #                           单双引号交叉使用
# #                           id值必须加引号-
# li_list = tree.xpath('//ul/li[@id="l1"]/text()')


# 找到id为l1的li标签的class的属性值
# li = tree.xpath('//ul/li[@id="l1"]/@class')


# 查询id中包含l的li标签
# li_list = tree.xpath('//ul/li[contains(@id, "l")]/text()')


# 查询id的值以 l 开头的li标签
# li_list = tree.xpath('//ul/li[starts-with(@id, "c")]/text()')


# 逻辑运算
# 查询id为l1和class为c1 的标签  无实际意义  查询的条件在同一个标签中
# li_list = tree.xpath('//ul/li[@id="l1" and @class="c1"]/text()')

li_list = tree.xpath('//ul/li[@id="l1"]/text() | //ul/li[@id="c3"]/text()')

# 判断列表长度
print(li_list)
print(len(li_list))

